// 文章路由处理函数
const db = require('../db/index')
// 导入日期处理模块
const moment = require('moment')
// 获取文章分类
exports.cates = (req, res) => {
    // 如果传入参数id说明是获取对应分类
    if (req.params.id) {
        db.getConnection((err, connection) => {
            if (err) return res.cc(err)
            connection.query('SELECT * FROM ev_article_cate WHERE id = ? AND is_delete = 0', req.params.id, (err, data) => {
                if (err) return res.cc(err)
                console.log(data);
                if (data.length < 1) return res.cc('该id无对应数据')
                res.send({
                    status: 0,
                    message: '获取分类数据成功!',
                    data
                })
            })
            connection.release()
        })
    } else {
        // 没有传id默认获取所有数据
        db.getConnection((err, connection) => {
            if (err) return res.cc(err)
            const sql = 'SELECT * FROM ev_article_cate WHERE is_delete = 0 ORDER BY id ASC' // 查询数据库中没有别逻辑删除的数据按从小到大排序
            connection.query(sql, (err, data) => {
                if (err) return res.cc(err)
                // 返回查询结果
                res.send({
                    status: 0,
                    message: '获取文章分类成功！',
                    data
                })
            })
            connection.release()
        })
    }
}

// 添加文章分类
exports.addcates = (req, res) => {
    db.getConnection((err, connection) => {
        if (err) return res.cc(err)
        connection.query('SELECT * FROM ev_article_cate WHERE `name`= ? OR alias= ?', [req.body.name, req.body.alias], (err, data) => {
            if (err) return res.cc(err)
            // 如果查到重复数据，则返回提示信息(坑：这里必须先判断data里面有无数据，如果不判断，当data为空时执行if语句会报属性未定义的错)
            if (data.length > 0) {
                if (data.length == 2 || (data[0].name == req.body.name && data[0].alias == req.body.alias)) return res.cc('分类名和别名均已被占用')
                if (data.length == 1 && data[0].name == req.body.name) return res.cc('分类名被占用')
                if (data.length == 1 && data[0].alias == req.body.alias) return res.cc('别名别占用')
            } else {
                // 添加文章
                const sql = 'INSERT INTO ev_article_cate  SET ?'
                console.log(sql);
                connection.query(sql, req.body, (err, data) => {
                    if (err) return res.cc('添加失败，请重试')
                    if (data.affectedRows !== 1) return res.cc('添加失败')
                    res.cc('添加成功', 0)
                })
            }
        })
        connection.release()
    })
}

// 根据id删除文章分类
exports.deletecate = (req, res) => {
    db.getConnection((err, connection) => {
        if (err) return res.cc(err)
        // const sql = 'DELETE FROM ev_article_cate WHERE id = ?'
        const sql = 'UPDATE ev_article_cate SET is_delete = 1 WHERE id = ?'
        connection.query(sql, req.params.id, (err, data) => {
            if (err) return res.cc(err)
            if (data.affectedRows !== 1) return res.cc('删除失败，请重试')
            if (data.changedRows == 0) return res.cc('删除失败，数据已经被删除')
            res.cc('删除成功', 0)
        })
        connection.release()
    })
}

// 修改文章分类
exports.updatecate = (req, res) => {
    db.getConnection((err, connection) => {
        if (err) return res.cc(err)
        // 判断更新的名字是否被其他分类占用
        connection.query('SELECT * FROM ev_article_cate WHERE is_delete = 0 and id <> ? and (`name`= ? OR alias= ?)', [req.body.id,req.body.name, req.body.alias], (err, data) => {
            if (err) return res.cc(err)
            if (data.length > 0) {
                if (data.length == 2 || (data[0].name == req.body.name && data[0].alias == req.body.alias)) return res.cc('分类名和别名均已被占用')
                if (data.length == 1 && data[0].name == req.body.name) return res.cc('分类名被占用')
                if (data.length == 1 && data[0].alias == req.body.alias) return res.cc('别名别占用')
            } else {
                const sql = 'UPDATE ev_article_cate SET  ? WHERE id = ?'
                connection.query(sql, [req.body, req.body.id], (err, data) => {
                    if (err) return res.cc(err)
                    res.send({
                        status: 0,
                        message: '更新分类信息成功',
                    })
                })
            }

        })
        connection.release()
    })
}

// 发布文章
exports.addArticle = (req,res)=>{
    db.getConnection((err,connection)=>{
        if(err) return res.cc(err)
        // 获取当前日期
        const day = moment().format('YYYY-MM-DD HH:mm:ss')
        req.body.pub_data = day
        connection.query('insert into ev_articles set ?',req.body,(err,data)=>{
            if(err) return res.cc(err)
            if(data.affectedRows !== 1) return res.cc('发布失败')
            res.cc('发布成功',0)
        })
    })
}
